Conventionally, when a peripheral device is connected to a client computer, the client computer receives information from the peripheral device that includes one or more “hardware identifiers.” In general, each hardware identifier is used to identify a function performed by the peripheral device. If the peripheral device is a multi-function device, such as a printer/scanner/fax machine, the client computer may receive one or more hardware identifiers each identifying the print function, the scan function and the fax function. Once received, each hardware identifier is used by the client computer to identify a driver that enables the client computer to interoperate with, and employ the corresponding function provided by, the peripheral device.
More than one hardware identifier may be provided for each function, because there may be more than one driver which will allow the client computer to employ a particular function. For example, many device manufacturers typically supply multiple drivers for a given device function, with one driver being very specific to the function, and others being more generic. More generic drivers typically may be used by a client computer to employ functions provided by any of multiple devices (or families of devices), but may not allow the client computer to employ all of the aspects of a given device function. For example, the manufacturer of a monitor may include one driver that enables a client computer to employ all of the display functionality provided by the monitor, and several more generic drivers that do not enable the client computer to employ all of this functionality, but allow the client computer to interoperate with any of several monitors.
Typically, hardware identifiers for a given function are provided to a client computer in a sequence which ranges from most specific to most generic. That is, for each function performed by the device, the client computer receives a sequence ranging from the most specific hardware identifier to the most generic. If the device is a multi-function device, the hardware identifiers for each individual function conform to this sequence. Thus, if a device has two functions, and two hardware identifiers are provided by the device for each function, the client computer receives two groups of identifiers, each arranged in a sequence from most specific to most generic. Once the hardware identifiers are received by the client computer, it attempts to match hardware identifiers in each group in sequence with a driver (e.g., stored on the client computer). When a hardware identifier received from the device does not match a driver, the client computer proceeds with trying to match the next hardware identifier in the sequence in the group. Once a matching driver is found for a group, the client computer may employ the function represented by identifiers in the group.
This processing is illustrated conceptually in FIG. 1, in which device 101 is connected to client computer 102 via link 120. Device 101 includes hardware identifiers 105, which are provided to client computer 102 when device 101 is connected thereto, and are employed by matching facility 110 (which may be a portion of an operating system executing on client computer 102) to retrieve one or more drivers. Hardware identifiers 105 include identifiers for each of three different functions, with the first digit in each identifier following the letter “H” identifying the function. For example, hardware identifiers H11 and H12 correspond to a first function, H21, H22 and H23 correspond to a second function, and H31 corresponds to a third function. The identifiers for each function are arranged in a sequence from most specific to most generic, with the second digit in each identifier following the letter “H” identifying a level of specificity. Thus, hardware identifier H11 for the first function is more specific than is H12, and hardware identifier H22 for the second function is more specific than is H23.
When device 101 is connected to client computer 102, matching facility 110 receives the hardware identifiers for each function in sequence, and attempts to match each hardware identifier for a given function in turn to a driver stored in storage facility 115. For example, for hardware identifiers relating to the first function, matching facility 110 first attempts to match identifier H11 to a driver stored in storage element 115, and if no match is found, proceeds to try to match identifier H12. Similarly, matching facility 110 attempts to match identifiers for the second function (i.e., H21, H22 and H23) and for the third function (i.e., H31) to a driver in storage facility 115. When a matching driver is found for any function, client computer 102 employs the corresponding function as defined by the driver.
Because each hardware identifier provided by a peripheral device relates to a function performed by the device, rather than the device itself, a client computer that receives hardware identifiers corresponding to multiple functions (such as might be supplied by a multi-function device) “perceives” the device as multiple distinct entities (i.e., one entity for each function defined by a set of hardware identifiers). For example, when a multi-function device such as a printer/scanner/fax machine provides hardware identifiers for its functions to a client computer, the client computer perceives the device as three entities, providing print, scan and fax capabilities, respectively.